package com.wang.tool.webtool;

import org.springframework.context.annotation.Import;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.time.LocalDateTime;

/**
 * 开启web工具
 * 1.统一模型处理
 * 2.日期序列化/反序列化
 *
 * @Author wangshaopeng
 * @Date 2020/12/28
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
@Import({WrapResponseAdvice.class, WebToolRegister.class, WebDateConverterConfig.class})
public @interface EnableWebTool {

    /**
     * 响应构建器
     * 统一管理响应模型
     * 全局异常处理
     */
    Class<? extends WebErrorResponseBuilder> errorBuilder() default SimpleWebErrorResponseBuilder.class;

    /**
     * 支持的日期反序列格式 注意优先级,前面的先解析
     * 默认支持ms数字
     * Date类型参数将使用配置的格式将str转换成Date
     *
     * @see Date
     * @see LocalDateTime
     */
    String[] dateDeserializeFormats() default {WebDateConverterConfig.DATE_TIME_FORMAT, WebDateConverterConfig.DATE_TIME_SSS_FORMAT};

    /**
     * 日期序列化格式
     * 空字符串序列化为long 毫秒
     *
     * @see Date
     * @see LocalDateTime
     */
    String dateSerializeFormat() default "";
}
